Hi all
I'm new to this forums just recently started learning C. Can someone offer me some help with this code:
Code:
int main()
{
char *name=malloc(20*sizeof(char));
char *name2=malloc(20*sizeof(char));
char *name3=malloc(20*sizeof(char));
int i;
int limit,limit2,limit3;
printf("Enter name please:"); //collect names
scanf("%s",name);
printf("Enter other name please:");
scanf("%s",name2);
printf("Enter third name please:");
scanf("%s",name3);
limit=strlen(name); //calculate string lengths
limit2=strlen(name2);
limit3=strlen(name3);
puts("\nFirst name was:"); //print each character up until limit
for(i=0;i<limit;i++)
printf("%c",*(name+i));
putchar('\n');
puts("Second name was:"); //print each character up until limit
for(i=0;i<limit2;i++)
printf("%c",*(name2+i));
putchar('\n');
puts("Third name was:"); //print each character up until limit
for(i=0;i<limit3;i++)
printf("%c",*(name3+i));
putchar('\n');
printf("\nThe size of name is:%d\n",limit); //demonstrate limits worked.
printf("The size of name is:%d\n",limit2);
printf("The size of name is:%d\n",limit3);
free(name); //call free function to release unused memory
free(name2);
free(name3);
puts("\nFirst name was:"); //repeat of lines 23 - 38. print each string in sequence.
for(i=0;i<limit;i++)
printf("%c",*(name+i));
putchar('\n');
puts("Second name was:");
for(i=0;i<limit2;i++)
printf("%c",*(name2+i));
putchar('\n');
puts("Third name was:");
for(i=0;i<limit3;i++)
printf("%c",*(name3+i));
putchar('\n');
return 0;
}
The code works up until the point that I reprint the strings after using free. The first string outputs random characters but strings 2 and 3 both output fine. I can't understand this.
Thank you for any help!